/**
 * 
 */
package neptune.console;

import java.util.List;

/**
 * @author oltremago
 * 
 */
public interface CLCommand {

	/**
	 * Returns the command name
	 * 
	 * @return
	 */
	public String getCommandName();

	/**
	 * Process a given command. The list passed as argument has in its first
	 * positions arguments belonging to this command. Subsequent positions are
	 * either other commands or their parameters.
	 * 
	 * This method must remove from the first positions of the list the consumed
	 * arguments.
	 * 
	 * @param args
	 * @return
	 */
	public void processCommand(List<String> args) throws Exception;

	/**
	 * Returns the help string of this method
	 * 
	 * @return
	 */
	public String getCommandHelp();

	/**
	 * Returns a string describing params used in this commad
	 * 
	 * @return
	 */
	public String getParamsDescription();

}